package com.xiangshizhineng.tianzhangzhi.app.model.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xiangshizhineng.tianzhangzhi.app.common.base.BaseDTO;
import com.xiangshizhineng.tianzhangzhi.app.utils.LongJsonSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("任务实体")
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tz_task")
public class TaskResponse extends BaseDTO implements Serializable {

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private Long id;

    /**
     * 任务编号
     */
    @ApiModelProperty(value = "任务编号")
    private String taskNum;
    /**
     * 任务名称
     */
    @ApiModelProperty(value = "任务名称")
    private String taskName;
    /**
     * 任务类别(字典id)
     */
    @ApiModelProperty(value = "任务类别 15定期核查，16下发图斑，17上报事件")
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long taskTypeId;
    /**
     * 责任田长
     */
    @ApiModelProperty(value = "责任田长")
    private String taskTz;
    /**
     * 巡查人id
     */
    @ApiModelProperty(value = "巡查人id")
    private Long taskXcr;
    /**
     * 巡查时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "开始巡查时间")
    private Date taskTime;
    /**
     * 任务状态(任务状态)
     */
    @ApiModelProperty(value = "任务状态(18巡查中 19待巡查 20已巡查 21已逾期)")
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long taskStatusId;
    /**
     * 行政区划代码
     */
    @ApiModelProperty(value = "行政区划代码")
    private String xzqhdm;
    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "")
    private Date createTime;
    /**
     *
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "")
    private Date updateTime;
    /**
     * 图斑id
     */
    @ApiModelProperty(value = "图斑id")
    private String tbId;
    /**
     * shape数据
     */
    @ApiModelProperty(value = "shape数据")
    private String shape;
    /**
     * 批次
     */
    @ApiModelProperty(value = "批次")
    private String production;
    /**
     * 创建人中文名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "创建人中文名称")
    private String createByN;

    /**
     * 任务期限开始日
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "任务期限开始日")
    private Date taskSTime;


    /**
     * 任务期限结束日
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "任务期限结束日")
    private Date taskETime;

    /**
     * 巡查人中文名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "巡查人中文名称")
    private String taskXcrName;

    /**
     * 催办
     */
    @ApiModelProperty(value = "催办 1催办（显示红叹号） 0和空不催办")
    private String cb;

    /**
     * 该批次未逾期任务数量
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "该批次已完成数量")
    private int finTask;

    /**
     * 该批次全部任务数量
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "该批次全部任务数量")
    private int allTask;


    /**
     * 该批次任务总巡查状态
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "总巡查状态（0已巡查，1有逾期）")
    private String wholeStatus;

    /**
     * 巡查人任务开始位置x
     */
    @ApiModelProperty(value = "巡查人任务开始位置x")
    private BigDecimal xcrSX;
    /**
     * 巡查人任务开始位置y
     */
    @ApiModelProperty(value = "巡查人任务开始位置Y")
    private BigDecimal xcrSY;
    /**
     * 面积
     */
    @ApiModelProperty(value = "面积")
    private double mj;
}
